Ad Soyad: Zeynep DEMİREL
Öğrenci Numarası: 21040101014
Ders Adı: Veri Madenciliği (FET308)
Öğretim Elemanı: SAJJAD NEMATZADEH MİANDOAB
Üniversite: İstanbul Topkapı Üniversitesi
Fakülte: Mühendislik Fakültesi
Bölüm: Bilgisayar Mühendisliği
Dataset Linki: https://www.kaggle.com/datasets/andrewmvd/heart-failure-clinical-data
Dataset Açıklaması: Kardiyovasküler hastalığı olan veya yüksek kardiyovasküler risk altında olan (hipertansiyon, diyabet, hiperlipidemi veya halihazırda yerleşik hastalık gibi bir veya daha fazla risk faktörünün varlığı nedeniyle) kişilerin erken tespit ve yönetime ihtiyacı vardır; bu durumda bir makine öğrenimi modelinin çok yardımcı olabileceği düşünülmektedir. Bu veri seti, kalp yetmezliği durumlarıyla ilgili klinik ve demografik özellikleri içeren bir veri setidir. Kalp yetmezliği, kalbin yeterince kan pompalayamadığı veya vücudun gereksinimlerini karşılayamadığı bir durumdur. Bu veri seti, hastaların özelliklerini ve takip edildikleri süreyi içerirken, ölüm olayının (DEATH_EVENT) varlığını da belirtir.
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import plotly.express as px
import plotly.graph_objs as go
df=pd.read_csv("heart_failure_clinical_records_dataset.csv")
df
| age | anaemia | creatinine_phosphokinase | diabetes | ejection_fraction | high_blood_pressure | platelets | serum_creatinine | serum_sodium | sex | smoking | time | DEATH_EVENT | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 75.0 | 0 | 582 | 0 | 20 | 1 | 265000.00 | 1.9 | 130 | 1 | 0 | 4 | 1 |
| 1 | 55.0 | 0 | 7861 | 0 | 38 | 0 | 263358.03 | 1.1 | 136 | 1 | 0 | 6 | 1 |
| 2 | 65.0 | 0 | 146 | 0 | 20 | 0 | 162000.00 | 1.3 | 129 | 1 | 1 | 7 | 1 |
| 3 | 50.0 | 1 | 111 | 0 | 20 | 0 | 210000.00 | 1.9 | 137 | 1 | 0 | 7 | 1 |
| 4 | 65.0 | 1 | 160 | 1 | 20 | 0 | 327000.00 | 2.7 | 116 | 0 | 0 | 8 | 1 |
| ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
| 294 | 62.0 | 0 | 61 | 1 | 38 | 1 | 155000.00 | 1.1 | 143 | 1 | 1 | 270 | 0 |
| 295 | 55.0 | 0 | 1820 | 0 | 38 | 0 | 270000.00 | 1.2 | 139 | 0 | 0 | 271 | 0 |
| 296 | 45.0 | 0 | 2060 | 1 | 60 | 0 | 742000.00 | 0.8 | 138 | 0 | 0 | 278 | 0 |
| 297 | 45.0 | 0 | 2413 | 0 | 38 | 0 | 140000.00 | 1.4 | 140 | 1 | 1 | 280 | 0 |
| 298 | 50.0 | 0 | 196 | 0 | 45 | 0 | 395000.00 | 1.6 | 136 | 1 | 1 | 285 | 0 |
299 rows × 13 columns
Data Analysis
print("Tablo Bilgisi:")
df.info()
Tablo Bilgisi: <class 'pandas.core.frame.DataFrame'> RangeIndex: 299 entries, 0 to 298 Data columns (total 13 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 age 299 non-null float64 1 anaemia 299 non-null int64 2 creatinine_phosphokinase 299 non-null int64 3 diabetes 299 non-null int64 4 ejection_fraction 299 non-null int64 5 high_blood_pressure 299 non-null int64 6 platelets 299 non-null float64 7 serum_creatinine 299 non-null float64 8 serum_sodium 299 non-null int64 9 sex 299 non-null int64 10 smoking 299 non-null int64 11 time 299 non-null int64 12 DEATH_EVENT 299 non-null int64 dtypes: float64(3), int64(10) memory usage: 30.5 KB
print("Tablonun Genel İstatistiği:")
print(df.describe())
Tablonun Genel İstatistiği:
age anaemia creatinine_phosphokinase diabetes \
count 299.000000 299.000000 299.000000 299.000000
mean 60.833893 0.431438 581.839465 0.418060
std 11.894809 0.496107 970.287881 0.494067
min 40.000000 0.000000 23.000000 0.000000
25% 51.000000 0.000000 116.500000 0.000000
50% 60.000000 0.000000 250.000000 0.000000
75% 70.000000 1.000000 582.000000 1.000000
max 95.000000 1.000000 7861.000000 1.000000
ejection_fraction high_blood_pressure platelets \
count 299.000000 299.000000 299.000000
mean 38.083612 0.351171 263358.029264
std 11.834841 0.478136 97804.236869
min 14.000000 0.000000 25100.000000
25% 30.000000 0.000000 212500.000000
50% 38.000000 0.000000 262000.000000
75% 45.000000 1.000000 303500.000000
max 80.000000 1.000000 850000.000000
serum_creatinine serum_sodium sex smoking time \
count 299.00000 299.000000 299.000000 299.00000 299.000000
mean 1.39388 136.625418 0.648829 0.32107 130.260870
std 1.03451 4.412477 0.478136 0.46767 77.614208
min 0.50000 113.000000 0.000000 0.00000 4.000000
25% 0.90000 134.000000 0.000000 0.00000 73.000000
50% 1.10000 137.000000 1.000000 0.00000 115.000000
75% 1.40000 140.000000 1.000000 1.00000 203.000000
max 9.40000 148.000000 1.000000 1.00000 285.000000
DEATH_EVENT
count 299.00000
mean 0.32107
std 0.46767
min 0.00000
25% 0.00000
50% 0.00000
75% 1.00000
max 1.00000
print("Tablonun Satır Sayısı:", df.shape[0])
print("Tablonun Sütun Sayısı:", df.shape[1])
Tablonun Satır Sayısı: 299 Tablonun Sütun Sayısı: 13
print("Veri Tipleri:")
print(df.dtypes)
Veri Tipleri: age float64 anaemia int64 creatinine_phosphokinase int64 diabetes int64 ejection_fraction int64 high_blood_pressure int64 platelets float64 serum_creatinine float64 serum_sodium int64 sex int64 smoking int64 time int64 DEATH_EVENT int64 dtype: object
min_values = df.min()
print("Minimum Değerler:")
print(min_values)
Minimum Değerler: age 40.0 anaemia 0.0 creatinine_phosphokinase 23.0 diabetes 0.0 ejection_fraction 14.0 high_blood_pressure 0.0 platelets 25100.0 serum_creatinine 0.5 serum_sodium 113.0 sex 0.0 smoking 0.0 time 4.0 DEATH_EVENT 0.0 dtype: float64
max_values = df.max()
print("Maximum Değerler:")
print(max_values)
Maximum Değerler: age 95.0 anaemia 1.0 creatinine_phosphokinase 7861.0 diabetes 1.0 ejection_fraction 80.0 high_blood_pressure 1.0 platelets 850000.0 serum_creatinine 9.4 serum_sodium 148.0 sex 1.0 smoking 1.0 time 285.0 DEATH_EVENT 1.0 dtype: float64
avg_values = df.mean()
print("Ortalama Değerler:")
print(avg_values)
Ortalama Değerler: age 60.833893 anaemia 0.431438 creatinine_phosphokinase 581.839465 diabetes 0.418060 ejection_fraction 38.083612 high_blood_pressure 0.351171 platelets 263358.029264 serum_creatinine 1.393880 serum_sodium 136.625418 sex 0.648829 smoking 0.321070 time 130.260870 DEATH_EVENT 0.321070 dtype: float64
std_values = df.std()
print("Standart Sapma Değerleri:")
print(std_values)
Standart Sapma Değerleri: age 11.894809 anaemia 0.496107 creatinine_phosphokinase 970.287881 diabetes 0.494067 ejection_fraction 11.834841 high_blood_pressure 0.478136 platelets 97804.236869 serum_creatinine 1.034510 serum_sodium 4.412477 sex 0.478136 smoking 0.467670 time 77.614208 DEATH_EVENT 0.467670 dtype: float64
quartiles = df.quantile([0.25, 0.5, 0.75])
print("Çeyreklikler (25%, 50%, 75%):")
print(quartiles)
Çeyreklikler (25%, 50%, 75%):
age anaemia creatinine_phosphokinase diabetes ejection_fraction \
0.25 51.0 0.0 116.5 0.0 30.0
0.50 60.0 0.0 250.0 0.0 38.0
0.75 70.0 1.0 582.0 1.0 45.0
high_blood_pressure platelets serum_creatinine serum_sodium sex \
0.25 0.0 212500.0 0.9 134.0 0.0
0.50 0.0 262000.0 1.1 137.0 1.0
0.75 1.0 303500.0 1.4 140.0 1.0
smoking time DEATH_EVENT
0.25 0.0 73.0 0.0
0.50 0.0 115.0 0.0
0.75 1.0 203.0 1.0
median_values = df.median()
print("Medyan Değerler:")
print(median_values)
Medyan Değerler: age 60.0 anaemia 0.0 creatinine_phosphokinase 250.0 diabetes 0.0 ejection_fraction 38.0 high_blood_pressure 0.0 platelets 262000.0 serum_creatinine 1.1 serum_sodium 137.0 sex 1.0 smoking 0.0 time 115.0 DEATH_EVENT 0.0 dtype: float64
mode_values = df.mode()
print("Mod Değerleri:")
print(mode_values)
Mod Değerleri:
age anaemia creatinine_phosphokinase diabetes ejection_fraction \
0 60.0 0.0 582.0 0.0 35.0
1 NaN NaN NaN NaN NaN
high_blood_pressure platelets serum_creatinine serum_sodium sex \
0 0.0 263358.03 1.0 136.0 1.0
1 NaN NaN NaN NaN NaN
smoking time DEATH_EVENT
0 0.0 187 0.0
1 NaN 250 NaN
correlation = df.corr()
print("Korelasyon Matrisi:")
print(correlation)
Korelasyon Matrisi:
age anaemia creatinine_phosphokinase \
age 1.000000 0.088006 -0.081584
anaemia 0.088006 1.000000 -0.190741
creatinine_phosphokinase -0.081584 -0.190741 1.000000
diabetes -0.101012 -0.012729 -0.009639
ejection_fraction 0.060098 0.031557 -0.044080
high_blood_pressure 0.093289 0.038182 -0.070590
platelets -0.052354 -0.043786 0.024463
serum_creatinine 0.159187 0.052174 -0.016408
serum_sodium -0.045966 0.041882 0.059550
sex 0.065430 -0.094769 0.079791
smoking 0.018668 -0.107290 0.002421
time -0.224068 -0.141414 -0.009346
DEATH_EVENT 0.253729 0.066270 0.062728
diabetes ejection_fraction high_blood_pressure \
age -0.101012 0.060098 0.093289
anaemia -0.012729 0.031557 0.038182
creatinine_phosphokinase -0.009639 -0.044080 -0.070590
diabetes 1.000000 -0.004850 -0.012732
ejection_fraction -0.004850 1.000000 0.024445
high_blood_pressure -0.012732 0.024445 1.000000
platelets 0.092193 0.072177 0.049963
serum_creatinine -0.046975 -0.011302 -0.004935
serum_sodium -0.089551 0.175902 0.037109
sex -0.157730 -0.148386 -0.104615
smoking -0.147173 -0.067315 -0.055711
time 0.033726 0.041729 -0.196439
DEATH_EVENT -0.001943 -0.268603 0.079351
platelets serum_creatinine serum_sodium sex \
age -0.052354 0.159187 -0.045966 0.065430
anaemia -0.043786 0.052174 0.041882 -0.094769
creatinine_phosphokinase 0.024463 -0.016408 0.059550 0.079791
diabetes 0.092193 -0.046975 -0.089551 -0.157730
ejection_fraction 0.072177 -0.011302 0.175902 -0.148386
high_blood_pressure 0.049963 -0.004935 0.037109 -0.104615
platelets 1.000000 -0.041198 0.062125 -0.125120
serum_creatinine -0.041198 1.000000 -0.189095 0.006970
serum_sodium 0.062125 -0.189095 1.000000 -0.027566
sex -0.125120 0.006970 -0.027566 1.000000
smoking 0.028234 -0.027414 0.004813 0.445892
time 0.010514 -0.149315 0.087640 -0.015608
DEATH_EVENT -0.049139 0.294278 -0.195204 -0.004316
smoking time DEATH_EVENT
age 0.018668 -0.224068 0.253729
anaemia -0.107290 -0.141414 0.066270
creatinine_phosphokinase 0.002421 -0.009346 0.062728
diabetes -0.147173 0.033726 -0.001943
ejection_fraction -0.067315 0.041729 -0.268603
high_blood_pressure -0.055711 -0.196439 0.079351
platelets 0.028234 0.010514 -0.049139
serum_creatinine -0.027414 -0.149315 0.294278
serum_sodium 0.004813 0.087640 -0.195204
sex 0.445892 -0.015608 -0.004316
smoking 1.000000 -0.022839 -0.012623
time -0.022839 1.000000 -0.526964
DEATH_EVENT -0.012623 -0.526964 1.000000
variance_values = df.var()
print("Varyans Değerleri:")
print(variance_values)
Varyans Değerleri: age 1.414865e+02 anaemia 2.461224e-01 creatinine_phosphokinase 9.414586e+05 diabetes 2.441023e-01 ejection_fraction 1.400635e+02 high_blood_pressure 2.286144e-01 platelets 9.565669e+09 serum_creatinine 1.070211e+00 serum_sodium 1.946996e+01 sex 2.286144e-01 smoking 2.187156e-01 time 6.023965e+03 DEATH_EVENT 2.187156e-01 dtype: float64
covariance = df.cov()
print("Kovaryans Matrisi:")
print(covariance)
Kovaryans Matrisi:
age anaemia creatinine_phosphokinase \
age 141.486483 0.519335 -9.415915e+02
anaemia 0.519335 0.246122 -9.181641e+01
creatinine_phosphokinase -941.591531 -91.816413 9.414586e+05
diabetes -0.593633 -0.003120 -4.620581e+00
ejection_fraction 8.460237 0.185282 -5.061745e+02
high_blood_pressure 0.530565 0.009057 -3.274880e+01
platelets -60907.118586 -2124.535856 2.321533e+06
serum_creatinine 1.958845 0.026777 -1.647038e+01
serum_sodium -2.412544 0.091681 2.549564e+02
sex 0.372120 -0.022480 3.701726e+01
smoking 0.103847 -0.024893 1.098696e+00
time -206.861351 -5.445142 -7.038036e+02
DEATH_EVENT 1.411454 0.015376 2.846447e+01
diabetes ejection_fraction high_blood_pressure \
age -0.593633 8.460237 0.530565
anaemia -0.003120 0.185282 0.009057
creatinine_phosphokinase -4.620581 -506.174452 -32.748805
diabetes 0.244102 -0.028361 -0.003008
ejection_fraction -0.028361 140.063455 0.138325
high_blood_pressure -0.003008 0.138325 0.228614
platelets 4454.928228 83545.241001 2336.480427
serum_creatinine -0.024010 -0.138379 -0.002441
serum_sodium -0.195226 9.185787 0.078292
sex -0.037261 -0.839667 -0.023916
smoking -0.034006 -0.372573 -0.012458
time 1.293259 38.330464 -7.289904
DEATH_EVENT -0.000449 -1.486667 0.017744
platelets serum_creatinine serum_sodium \
age -6.090712e+04 1.958845 -2.412544
anaemia -2.124536e+03 0.026777 0.091681
creatinine_phosphokinase 2.321533e+06 -16.470382 254.956443
diabetes 4.454928e+03 -0.024010 -0.195226
ejection_fraction 8.354524e+04 -0.138379 9.185787
high_blood_pressure 2.336480e+03 -0.002441 0.078292
platelets 9.565669e+09 -4168.399498 26810.436905
serum_creatinine -4.168399e+03 1.070211 -0.863173
serum_sodium 2.681044e+04 -0.863173 19.469956
sex -5.851105e+03 0.003448 -0.058158
smoking 1.291448e+03 -0.013263 0.009932
time 7.981107e+04 -11.988935 30.014152
DEATH_EVENT -2.247619e+03 0.142374 -0.402819
sex smoking time DEATH_EVENT
age 0.372120 0.103847 -206.861351 1.411454
anaemia -0.022480 -0.024893 -5.445142 0.015376
creatinine_phosphokinase 37.017261 1.098696 -703.803618 28.464468
diabetes -0.037261 -0.034006 1.293259 -0.000449
ejection_fraction -0.839667 -0.372573 38.330464 -1.486667
high_blood_pressure -0.023916 -0.012458 -7.289904 0.017744
platelets -5851.104689 1291.447854 79811.066099 -2247.619159
serum_creatinine 0.003448 -0.013263 -11.988935 0.142374
serum_sodium -0.058158 0.009932 30.014152 -0.402819
sex 0.228614 0.099706 -0.579224 -0.000965
smoking 0.099706 0.218716 -0.829005 -0.002761
time -0.579224 -0.829005 6023.965276 -19.127663
DEATH_EVENT -0.000965 -0.002761 -19.127663 0.218716
numeric_columns = df.select_dtypes(include=['float64', 'int64'])
at_least_3_numeric_columns = numeric_columns.columns[numeric_columns.nunique() >= 3]
selected_columns = numeric_columns[at_least_3_numeric_columns]
# Korelasyon matrisini oluşturma
correlation_matrix = selected_columns.corr()
# Korelasyon matrisini gösterme
print("Korelasyon Matrisi:", correlation_matrix)
Korelasyon Matrisi: age creatinine_phosphokinase \
age 1.000000 -0.081584
creatinine_phosphokinase -0.081584 1.000000
ejection_fraction 0.060098 -0.044080
platelets -0.052354 0.024463
serum_creatinine 0.159187 -0.016408
serum_sodium -0.045966 0.059550
time -0.224068 -0.009346
ejection_fraction platelets serum_creatinine \
age 0.060098 -0.052354 0.159187
creatinine_phosphokinase -0.044080 0.024463 -0.016408
ejection_fraction 1.000000 0.072177 -0.011302
platelets 0.072177 1.000000 -0.041198
serum_creatinine -0.011302 -0.041198 1.000000
serum_sodium 0.175902 0.062125 -0.189095
time 0.041729 0.010514 -0.149315
serum_sodium time
age -0.045966 -0.224068
creatinine_phosphokinase 0.059550 -0.009346
ejection_fraction 0.175902 0.041729
platelets 0.062125 0.010514
serum_creatinine -0.189095 -0.149315
serum_sodium 1.000000 0.087640
time 0.087640 1.000000
# Veriyi numpy dizisine dönüştürdüm
ejection_fraction = df['ejection_fraction'].to_numpy()
# Histogramı oluşturdum
count, bins_count = np.histogram(ejection_fraction, bins=10)
pdf = count / sum(count)
cdf = np.cumsum(pdf)
print("Ejeksiyon Fraksiyonu için PDF:", pdf)
print("\nEjeksiyon Fraksiyonu için CDF:", cdf)
Ejeksiyon Fraksiyonu için PDF: [0.07692308 0.12040134 0.11371237 0.42140468 0.06688963 0.07023411 0.11371237 0.01003344 0.00334448 0.00334448] Ejeksiyon Fraksiyonu için CDF: [0.07692308 0.19732441 0.31103679 0.73244147 0.7993311 0.86956522 0.98327759 0.99331104 0.99665552 1. ]
Visualization
# Veriyi numpy dizisine dönüştürdüm
ejection_fraction = df['ejection_fraction'].to_numpy()
# Histogramı oluşturdum
count, bins_count = np.histogram(ejection_fraction, bins=10)
pdf = count / sum(count)
# PDF'yi çizdirme
plt.bar(bins_count[1:], pdf, width=np.diff(bins_count), color="blue", alpha=0.7, label="PDF")
plt.legend()
plt.title('Ejeksiyon Fraksiyonu için Olasılık Yoğunluk Fonksiyonu (PDF)')
plt.xlabel("Ejeksiyon Fraksiyonu (yüzde)")
plt.ylabel("Olasılık Yoğunluğu")
plt.show()
# Veriyi numpy dizisine dönüştürdüm
ejection_fraction = df['ejection_fraction'].to_numpy()
# Histogramı oluşturdum
count, bins_count = np.histogram(ejection_fraction, bins=10)
cdf = np.cumsum(pdf)
# CDF'yi çizdirme
plt.bar(bins_count[1:], cdf, width=np.diff(bins_count), color="red", alpha=0.7, label="CDF")
plt.legend()
plt.title('Ejeksiyon Fraksiyonu için Birikimli Yoğunluk Fonksiyonu (CDF)')
plt.xlabel("Ejeksiyon Fraksiyonu (yüzde)")
plt.ylabel("Kümülatif Olasılık")
plt.show()
# Veriyi numpy dizisine dönüştürdüm
ejection_fraction = df['ejection_fraction'].to_numpy()
# Histogramı oluşturdum
count, bins_count = np.histogram(ejection_fraction, bins=10)
pdf = count / sum(count)
cdf = np.cumsum(pdf)
plt.plot(bins_count[1:], pdf, color="red", label="PDF")
plt.plot(bins_count[1:], cdf, label="CDF")
plt.legend()
plt.title('Ejeksiyon Fraksiyonu için Olasılık Yoğunluk Fonksiyonu (PDF) ve Birikimli Yoğunluk Fonksiyonu (CDF)')
plt.xlabel("Ejeksiyon Fraksiyonu (yüzde)")
plt.ylabel("Olasılık Yoğunluğu / Kümülatif Olasılık")
plt.show()
Kod Açıklaması:
Bu kod, "ejection_fraction" (ejeksiyon fraksiyonu yani her kasılmada kalpten çıkan kanın yüzdesi) sütunundaki veriler üzerinde bir olasılık yoğunluk fonksiyonu (PDF) ve birikimli yoğunluk fonksiyonu (CDF) grafiği oluşturuyor.1.1 Veri Hazırlama:
df['ejection_fraction'].to_numpy() ile "ejection_fraction" sütunundaki veriler bir NumPy dizisine dönüştürülüyor. np.histogram() ile veriler belirli bir bin sayısına göre histograma dökülüyor.1.2 PDF ve CDF Hesaplama:
count / sum(count) ile histogramdaki veri sayılarının toplam sayıya oranı alınarak olasılık yoğunluk fonksiyonu (PDF) hesaplanıyor. np.cumsum(pdf) ile PDF'deki değerlerin birikimli toplamı alınarak birikimli yoğunluk fonksiyonu (CDF) hesaplanıyor.1.3 Grafik Çizimi:
plt.plot() komutu kullanılarak PDF ve CDF çizimleri yapılıyor. "ejection_fraction" değerlerinin histogramını temsil eden PDF kırmızı renkte çiziliyor. CDF ise varsayılan renkte çiziliyor. plt.legend() ile grafikteki etiketler gösteriliyor. Eksen başlıkları ve grafik başlığı belirtiliyor.Veri Dağılımı Yorumu:
2.1 PDF Grafiği (Kırmızı):
Ejeksiyon fraksiyonu değerlerinin belirli aralıklarda yoğunluğunu gösterir. Örneğin, en yüksek olasılık yoğunluğu belirli bir aralıkta yüksekse, bu aralıktaki ejeksiyon fraksiyonu değerlerinin daha yaygın olduğunu gösterir. Ejeksiyon fraksiyonu değerlerinin yoğunluğunun 20 ile 60 arasında olduğunu görebiliriz. Bu aralık, grafikte PDF'nin daha yüksek olduğu bir bölge olarak göze çarpıyor.2.2 CDF Grafiği (Mavi):
Kümülatif olarak, belirli bir değerin altında kalan veri yüzdesini gösterir. Eğri ne kadar dikse, o değere ulaşma olasılığı o kadar yüksektir. Eğri, 0'dan 1'e doğru çıkarken, bu belirli bir değeri geçme olasılığını gösterir. Aynı zamanda bu grafikte CDF'nin sürekli olarak artması, değerlerin dağılımının geniş bir yelpazede olduğunu ve birikimli olasılık açısından homojen bir dağılıma sahip olduğunu gösteriyor.
fig = px.histogram(df, x="creatinine_phosphokinase", color="DEATH_EVENT", marginal="violin", hover_data=df.columns)
fig.update_layout(title_text="Kreatin Kinaz Değerlerinin Ölüm Olayları ile İlişkisi")
fig.show()
(Grafik, jupyter dosyasında görüntülenmektedir)
Bu kod, plotly kütüphanesini kullanarak bir histogram grafiği oluşturuyor. Histogram, "creatinine_phosphokinase" sütunundaki verilerin dağılımını gösteriyor. Bu dağılım, "DEATH_EVENT" sütununa göre renklendirilmiş ve kenarlarda birer violin plot (keman grafiği) eklenmiş.
Histogram, "creatinine_phosphokinase" sütunundaki değerlerin frekansını görselleştirir. Y ekseni, bu frekansı temsil ederken, X ekseni ise "creatinine_phosphokinase" sütunundaki değer aralıklarını gösterir. Renkler, "DEATH_EVENT" sütunundaki farklı kategorileri temsil eder ve her bir kategori için histogram dağılımını gösterir.
Aynı zamanda her bir X ekseni değeri için violin plotlar eklenmiş. Violin plotlar, veri dağılımının yoğunluğunu gösterir. Bu plotlar, verinin merkezi eğilimi (genellikle çeyrekliklerle gösterilir) ve verinin dağılımının genişliği hakkında bilgi sağlar.
hover_data=df.columns ifadesi, grafiğin üzerine gelindiğinde görüntülenecek ek veri setini belirtir. Bu durumda, tüm veri setinin sütun başlıklarını gösterir.
Bu grafik, creatinine phosphokinase değerlerinin ölüm olayları ile ilişkisini ve bu değerlerin dağılımını aynı anda göstererek veri setindeki ilişkileri inceleme imkanı sağlar.
fig = px.histogram(df, x="ejection_fraction", color="DEATH_EVENT", marginal="violin", hover_data=df.columns)
fig.update_layout(title_text="Ejeksiyon Fraksiyon Değerlerinin Ölüm Olayları ile İlişkisi")
fig.show()
(Grafik, jupyter dosyasında görüntülenmektedir)
Bu grafik, ejection fraction değerlerinin ölüm olayları ile ilişkisini ve bu değerlerin dağılımını aynı anda göstererek veri setindeki ilişkileri inceleme imkanı sağlar.
fig = px.histogram(df, x="platelets", color="DEATH_EVENT", marginal="violin", hover_data=df.columns)
fig.update_layout(title_text="Trombosit Değerlerinin Ölüm Olayları ile İlişkisi")
fig.show()
(Grafik, jupyter dosyasında görüntülenmektedir)
Bu grafik, trombosit değerlerinin ölüm olayları ile ilişkisini ve bu değerlerin dağılımını aynı anda göstererek veri setindeki ilişkileri inceleme imkanı sağlar.
fig = px.histogram(df, x="serum_creatinine", color="DEATH_EVENT", marginal="violin", hover_data=df.columns)
fig.update_layout(title_text="Serum Kreatinin Değerlerinin Ölüm Olayları ile İlişkisi")
fig.show()
(Grafik, jupyter dosyasında görüntülenmektedir)
Bu grafik, serum kreatinin değerlerinin ölüm olayları ile ilişkisini ve bu değerlerin dağılımını aynı anda göstererek veri setindeki ilişkileri inceleme imkanı sağlar.
fig = px.histogram(df, x="serum_sodium", color="DEATH_EVENT", marginal="violin", hover_data=df.columns)
fig.update_layout(title_text="Serum Sodyum Değerlerinin Ölüm Olayları ile İlişkisi")
fig.show()
(Grafik, jupyter dosyasında görüntülenmektedir)
Bu grafik, serum sodyum değerlerinin ölüm olayları ile ilişkisini ve bu değerlerin dağılımını aynı anda göstererek veri setindeki ilişkileri inceleme imkanı sağlar.
plt.figure(figsize=(12, 8))
sns.heatmap(df.corr(), annot=True)
plt.xticks(rotation=90)
plt.title("Korelasyon Isı Haritası")
Text(0.5, 1.0, 'Korelasyon Isı Haritası')
Bu ısı haritası veri setindeki farklı özellikler arasındaki ilişkileri görselleştiriyor. Grafiğin sağ tarafında ve altında renkli bir ölçek bulunuyor. Bu ölçek, korelasyon katsayılarının değerlerini gösterir; daha yüksek pozitif korelasyonlar açık renklerle (genellikle sarıya yakın), daha yüksek negatif korelasyonlar ise daha koyu renklerle (genellikle maviye yakın) temsil edilir.
Özellikler arasındaki güçlü pozitif korelasyonlar daha açık renklerde gösterilirken, negatif korelasyonlar daha koyu renklerde belirtilir. Örneğin, iki özellik arasında negatif bir korelasyon varsa, bu, biri artarken diğerinin azaldığı anlamına gelir.
Grafikteki odak noktası, birbirleriyle güçlü bir şekilde ilişkili olan özelliklerin belirlenmesidir. Özellikler arasındaki yüksek korelasyonlar, analiz edilen veri setindeki değişkenler arasındaki ilişkileri anlamamıza yardımcı olabilir.
plt.figure(figsize=(15, 20))
for i, col in enumerate(df.columns, 1):
plt.subplot(5, 3, i)
plt.title(f"Distribution of {col} Data")
sns.histplot(df[col], kde=True)
plt.tight_layout()
plt.show()
Bu kod, her sütunun dağılımını gösteren 5 satır ve 3 sütunlu bir alt grafik oluşturur. Her alt grafik, veri çerçevesinin bir sütununun histogramını gösterir. Bu şekilde veri setindeki her özellik için dağılım gözlemlenebilir.
hbp_yes = df[df['high_blood_pressure'] == 1]
hbp_no = df[df['high_blood_pressure'] == 0]
hbp_yes_survi = hbp_yes[hbp_yes["DEATH_EVENT"] == 0].reset_index(drop=True)
hbp_yes_not_survi = hbp_yes[hbp_yes["DEATH_EVENT"] == 1].reset_index(drop=True)
hbp_no_survi = hbp_no[hbp_no["DEATH_EVENT"] == 0].reset_index(drop=True)
hbp_no_not_survi = hbp_no[hbp_no["DEATH_EVENT"] == 1].reset_index(drop=True)
labels = ['HBP Var - Hayatta', 'HBP Var - Hayatta Değil', 'HBP Yok - Hayatta', 'HBP Yok - Hayatta Değil']
values = [
len(hbp_yes_survi),
len(hbp_yes_not_survi),
len(hbp_no_survi),
len(hbp_no_not_survi)
]
fig = go.Figure(data=[go.Pie(labels=labels, values=values, hole=.4)])
fig.update_layout(title_text="Hayatta Kalma Analizi - HBP (yüksek tansiyon)")
fig.show()
(Grafik, jupyter dosyasında görüntülenmektedir)
Grafik, her durumun veri setinde ne kadarlık bir orana sahip olduğunu görsel olarak sunarak, yüksek tansiyon ve ölüm olayı arasındaki ilişkiyi anlamak için bir araç sağlar. Örneğin, yüksek tansiyonu olanların hayatta kalma oranıyla, olmayanların hayatta kalma oranını karşılaştırabiliriz. Bu, yüksek tansiyonun ölüm oranı üzerindeki olası etkilerini anlamak için faydalı olabilir.
diabetes_yes = df[df['diabetes'] == 1]
diabetes_no = df[df['diabetes'] == 0]
diabetes_yes_survi = diabetes_yes[diabetes_yes["DEATH_EVENT"] == 0].reset_index(drop=True)
diabetes_yes_not_survi = diabetes_yes[diabetes_yes["DEATH_EVENT"] == 1].reset_index(drop=True)
diabetes_no_survi = diabetes_no[diabetes_no["DEATH_EVENT"] == 0].reset_index(drop=True)
diabetes__no_not_survi = diabetes_no[diabetes_no["DEATH_EVENT"] == 1].reset_index(drop=True)
labels = [
'Diyabet Var - Hayatta',
'Diyabet Var - Hayatta Değil',
'Diyabet Yok - Hayatta',
'Diyabet Yok - Hayatta Değil'
]
values = [
len(diabetes_yes_survi),
len(diabetes_yes_not_survi),
len(diabetes_no_survi),
len(diabetes__no_not_survi)
]
fig = go.Figure(data=[go.Pie(labels=labels, values=values, hole=.4)])
fig.update_layout(title_text="Hayatta Kalma Analizi - Diyabet")
fig.show()
(Grafik, jupyter dosyasında görüntülenmektedir)
Grafiğe bakarak, şeker hastalığının hayatta kalma üzerindeki etkisini anlayabiliriz. Örneğin, şeker hastalığı olanların hayatta kalma oranı ile olmayanların hayatta kalma oranını karşılaştırabiliriz. Bu, şeker hastalığının bu veri setindeki ölüm olayları üzerindeki olası etkilerini görmemize yardımcı olabilir.